#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
//int main()
//{
//	int a, b, c;
//	a = 5;
//	c = ++a;
//	b = ++c, c++, ++a, a++;
//	b += a++ + c;
//	printf("a = %d b = %d c = %d\n:", a, b, c);
//	return 0;
//}
//
//

//不允许创建临时变量，交换两个整数的内容

//a^0 = a
//a^a = 0
//
//int main()
//{
//	int a = 3;
//	int b = 5;
//	
//	//int tmp = a;
//	//a = b;
//	//b = tmp;
//
//	//a = a ^ b;
//	//b = a ^ b;
//	//a = a ^ b;
//
//	printf("a=%d b=%d", a, b);
//	
//	return 0;
//}


//写一个函数返回参数二进制中 1 的个数。
//比如： 15    0000 1111    4 个 1

//-1
//10000000000000000000000000000001
//11111111111111111111111111111110
//11111111111111111111111111111111
//
//这个算法对负数有点问题
//int count_one_bit(int num)
//{
//	int count = 0;
//	while (num)
//	{
//		if (num % 2 == 1)
//		{
//			count++;
//		}
//		num /= 2;
//	}
//	return count;
//}
//-1
//
//int count_one_bit(unsigned int num)
//{
//	int count = 0;
//	while (num)
//	{
//		if (num % 2 == 1)
//		{
//			count++;
//		}
//		num /= 2;
//	}
//	return count;
//}
//

//int count_one_bit(int num)
//{
//	int count = 0;
//	int i = 0;
//	for (i = 0; i < 32; i++)
//	{
//		if (((num >> i) & 1) == 1)  一个数按位与上一，得到的是他的二进制最低位
//		{
//			count++;
//		}
//	}
//	return count;
//}
//
//int count_one_bit(int num)
//{
//	int count = 0;
//	while (num)
//	{
//		num = num & (num - 1);
//		count++;
//	}
//	return count;
//}
//
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);//10 20 15 -1
//
//	int ret = count_one_bit(num);
//	printf("%d\n", ret);
//	return 0;
//}

//获取一个整数二进制序列中所有的偶数位和奇数位，分别打印出二进制序列
//1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
//1 1 0 1
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	int i = 0;
//	//偶数位
//	for (i = 31; i >= 1; i -= 2)
//	{
//		printf("%d ", (num >> i) & 1);
//	}
//	printf("\n");
//	//奇数位
//	for (i = 30; i >= 0; i -= 2)
//	{
//		printf("%d ", (num >> i) & 1);
//	}
//	printf("\n");
//	return 0;
//}
//

//01
//10
//两个int（32位）整数m和n的二进制表达中，有多少个位(bit)不同？ 
//int main()
//{
//	int m = 0;
//	int n = 0;
//	int i = 0;
//	scanf("%d %d", &m, &n);
//
//	int count = 0;
//	for (i = 0; i < 32; i++)
//	{
//		if (((m >> i) & 1) != ((n >> i) & 1))
//		{
//			count++;
//		}
//	}
//	printf("%d\n", count);
//	return 0;
//}
//
//int main()
//{
//	int m = 0;
//	int n = 0;
//	int i = 0;
//	scanf("%d %d", &m, &n);
//
//	int count = 0;
//	//异或 - 相同为0，相异为1
//	//010
//	//001
//	//011
//	int ret = m ^ n;
//	while (ret)
//	{
//		ret = ret & (ret - 1);
//		count++;
//	}
//	printf("%d\n", count);
//	return 0;
//}
//

//如何判断一个数是不是 2 的幂次方?
//2 的幂次方 的数：二进制中只有1个1
//2 - 10
//4 - 100
//8 - 1000
// ...
// n&(n-1) == 0
//10:21 回来
//


//#include <stdio.h>
//int i;
//int main()
//{
//    i--;
//    if (i > sizeof(i))
//    {
//        printf(">\n");
//    }
//    else
//    {
//        printf("<\n");
//    }
//    return 0;
//}




//https://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897?tpId=107&&tqId=33381&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking
//
//int main() {
//    int n = 0;
//    int m = 0;
//    //输入
//    scanf("%d %d", &n, &m);
//    //支持变长数组的
//    int arr1[n];
//    int arr2[m];
//    int arr3[n + m];
//    //输入arr1
//    int i = 0;
//    for (i = 0; i < n; i++)
//    {
//        scanf("%d", &arr1[i]);
//    }
//    //输入arr2
//    for (i = 0; i < m; i++)
//    {
//        scanf("%d", &arr2[i]);
//    }
//    //合并arr1和arr2到arr3数组中
//    i = 0;//i遍历arr1
//    int j = 0;//j遍历arr2
//    int k = 0;//k遍历arr3
//    while (i < n && j < m)
//    {
//        if (arr1[i] < arr2[j])
//        {
//            arr3[k] = arr1[i];
//            i++;
//            k++;
//        }
//        else
//        {
//            arr3[k] = arr2[j];
//            j++;
//            k++;
//        }
//    }
//    if (i == n)
//    {
//        for (; j < m; j++)
//        {
//            arr3[k] = arr2[j];
//            k++;
//        }
//    }
//    if (j == m)
//    {
//        for (; i < n; i++)
//        {
//            arr3[k] = arr1[i];
//            k++;
//        }
//    }
//    //打印
//    for (k = 0; k < m + n; k++)
//    {
//        printf("%d ", arr3[k]);
//    }
//    return 0;
//}
//
//


//
//int main() {
//    int n = 0;
//    int m = 0;
//    //输入
//    scanf("%d %d", &n, &m);
//    //支持变长数组的
//    int arr1[n];
//    int arr2[m];
//    //输入arr1
//    int i = 0;
//    for (i = 0; i < n; i++)
//    {
//        scanf("%d", &arr1[i]);
//    }
//    //输入arr2
//    for (i = 0; i < m; i++)
//    {
//        scanf("%d", &arr2[i]);
//    }
//    //合并arr1和arr2到arr3数组中
//    i = 0;//i遍历arr1
//    int j = 0;//j遍历arr2
//    int k = 0;//k遍历arr3
//    while (i < n && j < m)
//    {
//        if (arr1[i] < arr2[j])
//        {
//            printf("%d ", arr1[i]);
//            i++;
//        }
//        else
//        {
//            printf("%d ", arr2[j]);
//            j++;
//        }
//    }
//    if (i == n)
//    {
//        for (; j < m; j++)
//        {
//            printf("%d ", arr2[j]);
//        }
//    }
//    if (j == m)
//    {
//        for (; i < n; i++)
//        {
//            printf("%d ", arr1[i]);
//        }
//    }
//    return 0;
//}
//

//https://www.nowcoder.com/practice/ebf04de0e02c486099d78b7c3aaec255?tpId=107&&tqId=33398&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking
//
//#include <stdio.h>
//
//int Fib(int n)
//{
//    if (n <= 2)
//        return n;
//    else
//        return Fib(n - 1) + Fib(n - 2);
//}
//
//int main() {
//    int n = 0;
//    scanf("%d", &n);
//    int ret = Fib(n);
//    printf("%d\n", ret);
//    return 0;
//}
//

//https://www.nowcoder.com/practice/c178e3f5cc4641dfbc8b020ae79e2b71?tpId=107&&tqId=33319&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

#include <stdio.h>
#include <math.h>

//求出 5位数中的所有 Lily Number。
//12345
//12345/10    12345%10
//12345/100   12345%100=45
//12345/1000  12345%1000=345
//12345/10000 12345%10000=2345
//
//int main()
//{
//    int i = 0;
//    for (i = 10000; i <= 99999; i++)
//    {
//        //判断i是否是lily number
//        int j = 0;
//        int sum = 0;
//        for (j = 1; j <= 4; j++)
//        {
//            int n = (int)pow(10, j);
//            sum += (i / n) * (i % n);
//        }
//        if (sum == i)
//        {
//            printf("%d ", i);
//        }
//    }
//    return 0;
//}
//

//https://www.nowcoder.com/practice/689ec1e742394e09b1059556fc167b65?tpId=107&&tqId=33332&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking
//
//#include <stdio.h>
//
//int main() {
//    int a = 0;
//    int b = 0;
//    int c = 0;
//    while (scanf("%d %d %d", &a, &b, &c) == 3)
//    {
//        //判断
//        if (a + b > c && a + c > b && b + c > a)
//        {
//            if (a == b && b == c)
//            {
//                printf("Equilateral triangle!\n");
//            }
//            else if ((a == b && a != c) || (a == c && a != b) || (b == c && b != a))
//            {
//                printf("Isosceles triangle!\n");
//            }
//            else {
//                printf("Ordinary triangle!\n");
//            }
//        }
//        else
//        {
//            printf("Not a triangle!\n");
//        }
//    }
//    return 0;
//}
//
//
//
//#include <stdio.h>
//int main()
//{
//    int arr[] = { 1,2,3,4,5 };
//    short* p = (short*)arr;
//    int i = 0;
//    for (i = 0; i < 4; i++)
//    {
//        *(p + i) = 0;
//    }
//
//    for (i = 0; i < 5; i++)
//    {
//        printf("%d ", arr[i]);
//    }
//    return 0;
//}
//
//
//#include <stdio.h>
//int main()
//{
//    int a = 0x11223344;
//    char* pc = (char*)&a;
//    *pc = 0;
//    printf("%x\n", a);
//    return 0;
//}

//写一个函数打印arr数组的内容，不使用数组下标，使用指针。
//arr是一个整形一维数组。

//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	//打印
//	int * p = arr;
//	//遍历
//	//int i = 0;
//	//for (i = 0; i < 10; i++)
//	//{
//	//	printf("%d ", *(p + i));
//	//}
//
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", *p++);
//	}
//
//	return 0;
//}
//
//
//int main()
//{
//	int i = 0;
//	int arr[10] = { 0 };
//	//printf("%p\n", &i);
//	//printf("%p\n", &arr[9]);
//	//printf("%p\n", &arr[0]);
//
//	for (i = 0; i <= 12; i++)
//	{
//		printf("hehe\n");
//		arr[i] = 0;
//	}
//	return 0;
//}
//

